package com.globalresources.commons;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTime
{
	/***
	 * 返回十天前的日期（格式为:2008-01-01）
	 * return String
	 * 
	 * ***/
	public String getBeforeTen(){	
		      Calendar cal = Calendar.getInstance();
	       //  日期的DATE减去10  就是往后推10 天 同理 +10 就是往后推十天
	          cal.add(Calendar.DATE, -11);
	          SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
	          String str = sf.format(cal.getTime());
	          System.out.print(str);
	          return str;
	}
		
	
	
	/**
	 * 返回今天的日期时间——12小时制(格式为:2008-01-01 12:12:12)
	 * return String 
	 * */
	public String hhDateTime ( )
	{
		// 返回今天的日期时间——12小时制(格式为:2008-01-01 12:12:12)
		java.util.Date date = new java.util.Date ( ) ;
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat ( "yyyy-MM-dd hh:mm:ss" ) ;
		String DateTime = sf.format ( date ) ;
		return DateTime ;
	}

	
	/**
	 * 返回今天的日期时间——24小时制(格式为:2008-01-01 22:22:22 )
	 * return String 
	 * */
	public String HHDateTime ( )
	{
		// 返回今天的日期时间——24小时制(格式为:2008-01-01 22:22:22 )
		java.util.Date date = new java.util.Date ( ) ;
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
		String DateTime = sf.format ( date ) ;
		return DateTime ;
	}
	
	/**
	 * 返回今天的日期时间——24小时制(格式为:2008-01-01 22:22:22 )
	 * return String 
	 * */
	
	public String YMDDateTime ( )
	{
		// 返回今天的日期时间——24小时制(格式为:2008-01-01 22:22:22 )
		java.util.Date date = new java.util.Date ( ) ;
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat ( "yyyy-MM-dd" ) ;
		String DateTime = sf.format ( date ) ;
		return DateTime ;
	}

	/**
	 * 把相应的字符串转成日期+时间格式
	 * return Timestamp
	 * */
	
	public java.sql.Timestamp _DateTime ( String bogusString )
	{
		// 把相应的字符串转成日期+时间格式
		String date = bogusString ;
		return java.sql.Timestamp.valueOf ( date ) ;
	}
	/**
	 * 把相应的字符串转成日期格式
	 * return Date
	 * */
	
	public java.sql.Date _Date ( String bogusString )
	{
		// 把相应的字符串转成日期格式
		String date = bogusString ;
		return java.sql.Date.valueOf ( date ) ;
	}


	/**
	 * 把相应的字符串转成时间格式
	 * return Time
	 * */
	public java.sql.Time _Time ( String bogusString )
	{
		// 把相应的字符串转成时间格式
		String date = bogusString ;
		return java.sql.Time.valueOf ( date ) ;
	}
	
	/**
	 * 计算两天的时间差
	 * return Time
	 * */
	public static int getDaysBetween (Calendar d1, Calendar d2) 
    {  
	       if (d1.after(d2)) {  // swap dates so that d1 is start and d2 is end  
	          java.util.Calendar swap = d1;  
		          d1 = d2;  
		          d2 = swap;  
		     }  
		      int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);  
		      int y2 = d2.get(Calendar.YEAR);  
		      if (d1.get(Calendar.YEAR) != y2) 
		      {  
		         d1 = (Calendar) d1.clone();  
		         do {  
		               days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数  
		             d1.add(Calendar.YEAR, 1);  
		            } while (d1.get(Calendar.YEAR) != y2);  
		      }  
		       return days;  
		    }  
	
	/***
	 * 获取当前时间 yyyy-mm-dd
	 * 
	 * */
	  public  String getDate()
	    {
	         Calendar cal = Calendar.getInstance();
	         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
	         String date = formatter.format(cal.getTime());
	         return date;
	    } 
	  
	  /***
	   * 
	   * */
	  
	  public static String getDateTimeBetween(String datetime)throws Exception{
		  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String systemTime = sdf .format(new Date()).toString();
		  Date end = sdf.parse(systemTime);
		  Date begin=sdf.parse(datetime);
		   long l=end.getTime()-begin.getTime();
	       long day=l/(24*60*60*1000);
	       long hour=(l/(60*60*1000)-day*24);
	       long min=((l/(60*1000))-day*24*60-hour*60);
	       long s=(l/1000-day*24*60*60-hour*60*60-min*60);
	       return day+"Days"+"-"+hour+"H"+"-"+min+"m"+"-"+s+"s";
	  }
	  
	  
	  public static void main(String[] args){
			 DateTime d=new DateTime();
//			 System.out.println(d);
	//		 String stime=d.getDate();
		//	 System.out.println(stime);
			 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			 String systemTime = sdf .format(new Date()).toString();
            String datetime="2009-09-03 04:02:01";
            try{
            System.out.println(getDateTimeBetween(datetime));
            }catch(Exception e ){}
		  
	  }
	
}
